package br.com.uniban.dto;

import java.io.Serializable;
import java.util.Date;

public class ProvaDTO implements Serializable{
	
	private static final long serialVersionUID = -9000864061677289033L;
	private Integer idProva;
	private Long idUsuario;
	private Long idCriador;
	private Short idDisciplina;
	private String palavraChave;
	private String nomeProva;
	private String userName;
	private Date publicacao;
	private Character nivel;
	private Boolean flAtiva;
	
	public Boolean getFlAtiva() {
		return flAtiva;
	}
	public void setFlAtiva(Boolean flAtiva) {
		this.flAtiva = flAtiva;
	}
	public Integer getIdProva() {
		return idProva;
	}
	public void setIdProva(Integer idProva) {
		this.idProva = idProva;
	}
	public Long getIdUsuario() {
		return idUsuario;
	}
	public void setIdUsuario(Long idUsuario) {
		this.idUsuario = idUsuario;
	}
	public Short getIdDisciplina() {
		return idDisciplina;
	}
	public void setIdDisciplina(Short idDisciplina) {
		this.idDisciplina = idDisciplina;
	}
	public String getPalavraChave() {
		return palavraChave;
	}
	public void setPalavraChave(String palavraChave) {
		this.palavraChave = palavraChave;
	}
	
	public String getNomeProva() {
		return nomeProva;
	}
	public void setNomeProva(String nomeProva) {
		this.nomeProva = nomeProva;
	}
	public Date getPublicacao() {
		return publicacao;
	}
	public void setPublicacao(Date publicacao) {
		this.publicacao = publicacao;
	}
	public Character getNivel() {
		return nivel;
	}
	public void setNivel(Character nivel) {
		this.nivel = nivel;
	}	
	public Long getIdCriador() {
		return idCriador;
	}
	public void setIdCriador(Long idCriador) {
		this.idCriador = idCriador;
	}	
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public boolean isUsaWhere(){
		return toString().replace("null", "").replace(",", "").length() > 0 ? true:false;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((flAtiva == null) ? 0 : flAtiva.hashCode());
		result = prime * result
				+ ((idCriador == null) ? 0 : idCriador.hashCode());
		result = prime * result
				+ ((idDisciplina == null) ? 0 : idDisciplina.hashCode());
		result = prime * result + ((idProva == null) ? 0 : idProva.hashCode());
		result = prime * result
				+ ((idUsuario == null) ? 0 : idUsuario.hashCode());
		result = prime * result + ((nivel == null) ? 0 : nivel.hashCode());
		result = prime * result
				+ ((nomeProva == null) ? 0 : nomeProva.hashCode());
		result = prime * result
				+ ((palavraChave == null) ? 0 : palavraChave.hashCode());
		result = prime * result
				+ ((publicacao == null) ? 0 : publicacao.hashCode());
		result = prime * result
				+ ((userName == null) ? 0 : userName.hashCode());
		return result;
	}
	
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		ProvaDTO other = (ProvaDTO) obj;
		if (flAtiva == null) {
			if (other.flAtiva != null)
				return false;
		} else if (!flAtiva.equals(other.flAtiva))
			return false;
		if (idCriador == null) {
			if (other.idCriador != null)
				return false;
		} else if (!idCriador.equals(other.idCriador))
			return false;
		if (idDisciplina == null) {
			if (other.idDisciplina != null)
				return false;
		} else if (!idDisciplina.equals(other.idDisciplina))
			return false;
		if (idProva == null) {
			if (other.idProva != null)
				return false;
		} else if (!idProva.equals(other.idProva))
			return false;
		if (idUsuario == null) {
			if (other.idUsuario != null)
				return false;
		} else if (!idUsuario.equals(other.idUsuario))
			return false;
		if (nivel == null) {
			if (other.nivel != null)
				return false;
		} else if (!nivel.equals(other.nivel))
			return false;
		if (nomeProva == null) {
			if (other.nomeProva != null)
				return false;
		} else if (!nomeProva.equals(other.nomeProva))
			return false;
		if (palavraChave == null) {
			if (other.palavraChave != null)
				return false;
		} else if (!palavraChave.equals(other.palavraChave))
			return false;
		if (publicacao == null) {
			if (other.publicacao != null)
				return false;
		} else if (!publicacao.equals(other.publicacao))
			return false;
		if (userName == null) {
			if (other.userName != null)
				return false;
		} else if (!userName.equals(other.userName))
			return false;
		return true;
	}
	
	@Override
	public String toString() {
		return idProva + "," + idUsuario + "," + idDisciplina + "," + palavraChave + "," + nomeProva + "," + publicacao + "," + nivel + "," + flAtiva + "," + userName;
	}

}
